package cn.com.khproc;

import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.json.JSONObject;

import cn.com.kh.JsonFormatUtil;

public class TPXMLToJson {
	private static final Log log = LogFactory.getLog(TPXMLToJson.class);

	@SuppressWarnings("unchecked")
	public static String toJson(String in_Sync_Type, String in_ElementKey, String in_Sync_XML) {
		log.debug("转换前的XML：" + in_Sync_XML);

		JSONObject reJsonObj = new JSONObject();

		try {

			// 将字符串转为XML
			Document doc = DocumentHelper.parseText(in_Sync_XML);

			// 获取根节点
			Element rootElt = doc.getRootElement();

			// 递归遍历当前节点所有的子节点
			List<Element> listElement = null;

			if (in_ElementKey.equals("BODY")) {
				listElement = rootElt.element("BODY").elements();

			} else if (in_ElementKey.equals("BASE_PART")) {
				listElement = rootElt.element("BODY").element("BASE_PART").elements();

			} else {
				listElement = rootElt.element("BODY").element("BASE_PART").element(in_ElementKey).elements();
			}

			// 遍历所有一级子节点
			for (Element e : listElement) {
				reJsonObj.put(e.getName().toLowerCase(), e.getTextTrim());
			}

			log.debug("插入类型Sync_Type：" + in_Sync_Type);
			reJsonObj.put("sync_type", in_Sync_Type);

		} catch (DocumentException e) {
			log.error("DocumentException : " + e.getMessage());
			reJsonObj = null;

		} catch (Exception e) {
			log.error("Exception : " + e.getMessage());
			reJsonObj = null;

		}

		log.debug("转换后的Json：" + JsonFormatUtil.formatJson(reJsonObj.toString()));

		return reJsonObj.toString();

	}
}